import java.util.Arrays;
public class Task1 {

    public static void main(String[] args) {

        // 定义一个长度为[16][16]类型为int的二维数组
        int[][] arr = new int[16][16];

        // 为所有位置的元素赋值
        int num = 1;
        for(int i=0; i<arr.length; i++) {
            for(int j=0; j<arr[i].length; j++) {
                arr[i][j] = num++;
            }
        }

        System.out.println("初试化后的二维数组为：");
        for(int i=0; i<arr.length; i++) {
            for(int j=0; j<arr[i].length; j++) {
                System.out.print(arr[i][j] + "  ");
            }
            System.out.println();
        }

        System.out.println("----------------------------------------");
        // 二维数组中所有行中的所有元素的累加并打印
        int[] rowArr = new int[arr.length];
        for(int i=0; i<arr.length; i++) {
            for(int j=0; j<arr[i].length; j++) {
                //rowArr第一个数rowArr[0]是arr第一行第一列 arr[0][0]
                //                       arr第一行第二列 arr[0][1]
                //                       arr第一行第三列 arr[0][2]
                //                       ...之和
                //也就是rowArr[0] = arr[0][0]+arr[0][1]+arr[0][2]+...
                //     rowArr[1] = arr[1][0]+arr[1][1]+arr[1][2]+...
                //     ...
                //     rowArr[i] += arr[i][j]
                rowArr[i] += arr[i][j];
                //执行过程：rowArr[0] += arr[0][1];
                //        rowArr[1] += arr[0][2];
                //        rowArr[2] += arr[0][3];
                //也就是第一轮内层对于j的for循环，rowArr只有第一个位置的元素加了一遍arr第一列的值
            }
        }

        for(int i=0; i<rowArr.length; i++) {
            System.out.println("第" + (i+1) + "行的元素累加和是：" + rowArr[i]);
        }

        System.out.println("----------------------------------------");
        // 二维数组中所有列中的所有元素的累加并打印
        int[] colArr = new int[arr[0].length];
        for(int i=0; i<arr.length; i++) {
            for(int j=0; j<arr[i].length; j++) {
                //colArr第一个数colArr[0]是arr第一行第一列 arr[0][0]
                //                       arr第二行第一列 arr[1][0]
                //                       arr第三行第一列 arr[2][0]
                //                       ...之和
                //也就是colArr[0] = arr[0][0]+arr[1][0]+arr[2][0]+...
                //     colArr[1] = arr[0][1]+arr[1][1]+arr[2][1]+...
                //     ...
                //     colArr[j] += arr[i][j]
                colArr[j] += arr[i][j];
                //执行过程：colArr[0] += arr[0][1];
                //        colArr[1] += arr[0][2];
                //        colArr[2] += arr[0][3];
                //也就是第一轮内层对于j的for的循环，colArr每个位置元素都分别加了arr第一行对应列的值
            }
        }

        for(int i=0; i<colArr.length; i++) {
            System.out.println("第" + (i+1) + "列的元素累加和是：" + colArr[i]);
        }

        System.out.println("----------------------------------------");
        // 二维数组中左上角到右下角所有元素的累加并打印
        int fromLeftUpToRightDownSum = 0;
        for(int i=0; i<arr.length; i++) {
            fromLeftUpToRightDownSum += arr[i][i];
        }
        System.out.println("二维数组中左上角到右下角所有元素的累加和是：" + fromLeftUpToRightDownSum);


        System.out.println("----------------------------------------");
        // 6.实现二维数组中右上角到左下角所有元素的累加并打印
        int fromRightUpToLeftDownSum = 0;
        for(int i=0; i<arr.length; i++) {
            //arr[0][15]
            //arr[1][14]
            //arr[2][13]
            //...
            //arr[15][0]
            //arr[i][16-i-1]
            fromRightUpToLeftDownSum += arr[i][arr[i].length-i-1];
        }
        System.out.println("二维数组中右上角到左下角所有元素的累加和是：" + fromRightUpToLeftDownSum);

    }
}




